1、WSGI
web server gateway interface
一个框架定义的简单通用的接口
Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。
flask框架内有默认的服务器 Nginx 会启动框架内内置的server
2、默认情况下,只能是本机访问。
如果host改成:0.0.0.0 外网可以通过ip地址来访问
3、路由的请求和响应
浏览器地址栏输入路由: 172.29.2.50 ——> 服务器——> app——->有没有这个路由——->
就会执行路由匹配的函数——> 返回对应的函数值 ——-> response——> 返回客户端的浏览器
请求: request
请求的方法是什么? method:get post
请求头:这些都可以被称为请求头
请求体:只有post的情况下,才会看到请求体,一般的情况下是没有的。
响应:response
响应行:状态码—> 200 代表OK 还有其他的状态码 代表的其他不同的意思
响应头: Content-length; Content-type;Date 等相关信息
响应体:标签上的相关信息
5、路由
def route(self, rule, **options):
def decorator(f):
self.add_url_rule(rule, endpoint, f, **options)
return f
return decorator
以下装饰器的作用 等价于 @app.route 的方法
其实就是讲 rule 和 视图函数进行了绑定,通过 add_url_rule() 实现的绑定
def index():
return ‘welcome everyone!’
将这个规则和函数都绑定在一块了
app.add_url_rule(‘/index’, view_func = index)
6、路由的变量规则——> UUID 唯一的标识码 类似于身份证的作用
Original: https://blog.csdn.net/wldcn3/article/details/128749041Author: 周杰伦的粉丝Title: Python-Flask-2023.1.22
相关阅读
Title: 豆瓣电影Top250数据分析
此项目是b站上一视频的学习成果,此项目主要技术就是用了python爬虫搜集数据然后用Flask框架、Echarts、WordCloud等技术实现数据可视化
视频地址:Python爬虫编程基础5天速成(2021全新合集)Python入门+数据分析_哔哩哔哩_bilibili
先展示下效果吧
爬虫的代码在上一篇介绍过,可视化分析主要用了 这五个页面,那么接下来就直接整flask的核心代码咯
from flask import Flask,render_template,request
import sqlite3
app = Flask(__name__)
datalist = [] #设为全局变量,用于存储数据和分页使用
movieScore = [] #评分
num = [] #每个评分所统计的电影数量
page=[1,2,3,4,5,6,7,8,9,10]
@app.route('/')
def index():
return render_template('first.html')
@app.route('/first')
def first():
return index()
@app.route('/movie')
def movie():
if len(datalist) == 0:
# print("关于电影数据库被启动了!")
con = sqlite3.connect('./movieTop250.db')
cur = con.cursor()
sql = "select * from movie250"
data = cur.execute(sql)
for item in data:
datalist.append(item)
cur.close()
con.close()
page=1
movies=[]
#对列表进行分割
for i in range(25):
movies.append(datalist[i])
return render_template('movie.html',movies=movies,page=page)
#进行分页
@app.route('/movie/start=')
def movie2(page):
movies=[]
#对列表进行分割
if page: #page存在
first=(page-1)*25 #首页
last=page*25 #尾页
else :
first=0 #首页
last=25 #尾页
for i in range(first,last):
movies.append(datalist[i])
#列表分割完成
if page == 1:
return render_template('movie.html',movies=movies,page=page)
elif page == 2:
return render_template('movie.html',movies=movies,page=page)
elif page == 3:
return render_template('movie.html',movies=movies,page=page)
elif page == 4:
return render_template('movie.html',movies=movies,page=page)
elif page == 5:
return render_template('movie.html',movies=movies,page=page)
elif page == 6:
return render_template('movie.html',movies=movies,page=page)
elif page == 7:
return render_template('movie.html',movies=movies,page=page)
elif page == 8:
return render_template('movie.html',movies=movies,page=page)
elif page == 9:
return render_template('movie.html',movies=movies,page=page)
elif page == 10:
return render_template('movie.html',movies=movies,page=page)
else :
return render_template('movie.html',movies=movies,page=page)
@app.route('/score')
def score():
if (movieScore == [] or num == []):
# print("关于评分数据库被启动了!")
con = sqlite3.connect('./movieTop250.db')
cur = con.cursor()
sql = "select score,count(score) from movie250 group by score"
data = cur.execute(sql)
for item in data:
#是元组类型
movieScore.append(item[0])
num.append(item[1])
cur.close()
con.close()
return render_template('score.html',movieScore=movieScore,num=num)
@app.route('/word')
def word():
return render_template('word.html')
@app.route('/team')
def team():
return render_template('team.html')
@app.route('/echarts')
def echarts():
return render_template('test_echarts.html')
if __name__ == "__main__":
app.run(debug=True)
Original: https://blog.csdn.net/weixin_53011574/article/details/122346349Author: 低调$(生活)Title: 豆瓣电影Top250数据分析
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/375364/
转载文章受原作者版权保护。转载请注明原作者出处!
|